package com.qining618.cms.ucenter.domain;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;

import lombok.*;
import lombok.experimental.Accessors;

/**
 * <p>
 * 用户
 * </p>
 *
 * @author qining
 * @date 2019-09-17
 */
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("o_user")
public class User implements Serializable {

    private static final long serialVersionUID=1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 头像
     */
    @TableField("`avatar`")
    private String avatar;

    /**
     * 昵称
     */
    @TableField("`nickname`")
    private String nickname;

    /**
     * 用户名
     */
    @TableField("`username`")
    private String username;

    /**
     * 手机号
     */
    @TableField("`mobile`")
    private String mobile;

    /**
     * 密码
     */
    @TableField("`password`")
    private String password;

    /**
     * 今日评论数
     */
    @TableField("`today_comment_total`")
    private Integer todayCommentTotal;

    /**
     * 是否管理员 1是 0否
     */
    @TableField("`is_admin`")
    private Boolean isAdmin;

    /**
     * 角色id
     */
    @TableField("`role_id`")
    private Long roleId;

    /**
     * 角色名称
     */
    @TableField(exist = false)
    private String roleName;

    /**
     * 错误次数
     */
    @TableField("`error_count`")
    private Short errorCount;

    /**
     * 错误时间
     */
    @TableField("`error_time`")
    private Date errorTime;

    /**
     * 错误ip
     */
    @TableField("`error_ip`")
    private String errorIp;

    /**
     * 是否锁定
     */
    @TableField("`is_lock`")
    private Boolean isLock;

    /**
     * 锁定时间
     */
    @TableField("`lock_time`")
    private Date lockTime;

    /**
     * 锁定到期时间（锁定到期不会解锁）
     */
    @TableField("`lock_due_time`")
    private Date lockDueTime;

    /**
     * 是否冻结 1是 0否
     */
    @TableField("`is_freeze`")
    private Boolean isFreeze;

    /**
     * 冻结时间
     */
    @TableField("`freeze_time`")
    private Date freezeTime;

    /**
     * 冻结到期时间
     */
    @TableField("`freeze_due_time`")
    private Date freezeDueTime;

    /**
     * 冻结原因
     */
    @TableField("`freeze_reason`")
    private String freezeReason;

    /**
     * 注册时间
     */
    @TableField("`register_time`")
    private Date registerTime;

    /**
     * 注册ip
     */
    @TableField("`register_ip`")
    private String registerIp;

    /**
     * 登录时间
     */
    @TableField("`login_time`")
    private Date loginTime;

    /**
     * 上次登录ip
     */
    @TableField("`last_login_ip`")
    private String lastLoginIp;

    /**
     * 上次登录时间
     */
    @TableField("`last_login_time`")
    private Date lastLoginTime;

    /**
     * 登录ip
     */
    @TableField("`login_ip`")
    private String loginIp;

    /**
     * 登录次数
     */
    @TableField("`login_count`")
    private Integer loginCount;

    /**
     * 创建时间
     */
    @TableField("`ctime`")
    private Date ctime;

    /**
     * 修改时间
     */
    @TableField("`mtime`")
    private Date mtime;

    public void init() {
        if (getTodayCommentTotal() == null) {
            setTodayCommentTotal(0);
        }
        if (getIsAdmin() == null) {
            setIsAdmin(false);
        }
        if (getIsLock() == null) {
            setIsLock(false);
        }
        if (getIsFreeze() == null) {
            setIsFreeze(false);
        }
        if (getLoginCount() == null) {
            setLoginCount(0);
        }
    }
}
